Je profite de ce dimanche pour partager une petite macro Excel que j’utilise depuis quelques temps compte tenu de l’usage d’un format de nomenclature assez constant chez nos clients. Cette macro me permet de recréer des liens de nomenclature à partir d’un fichier Excel dans lequel on retrouve une liste d’articles avec leur niveau dans la nomenclature. C’est assez simple à lire pour l’être humain. On comprend rapidement que quand une ligne a le niveau 3 et que la suivante a le niveau 4, il y a un lien de nomenclature entre les deux. Cependant au niveau d’excel, il n’y a aucune relation. Seul notre regard et notre connaissance du concept de nomenclature nous permet d’en déduire une. Voila un aperçu de ce que je peux recevoir comme nomenclature.

nomenclature

Au passage vers la solution PLM il nous faut donc recréer ce lien. Il faut que l’on puisse indiquer pour chaque ligne quel est l’élément parent. Je rajoute donc une colonne après le niveau pour renseigner le part Number de l’élément parent. J’applique ensuite la macro suivante à adapter à votre fichier (Constantes initiales à modifier. Attention à commencer par la ligne en dessous de votre article de tête, 3 dans l’exemple).

 Sub rebuild()


' initialize constant for your excel file '
Dim StartingLine As Integer
StartingLine = 3
Dim Column_Level As Integer
Column_Level = 1
Dim Column_ParentRef As Integer
Column_ParentRef = 2
Dim Column_PartRef As Integer
Column_PartRef = 3

' other technical variables '
Dim j As Integer
Dim StoreParents(40) As String

'initialize first parent Part Number '
initParent = Cells(StartingLine, 5)

' Start rebuilding BOM '
j = StartingLine
While Cells(j, Column_Level) <> ""

    If (CInt(Cells(j, Column_Level)) > CInt(Cells(j - 1, Column_Level))) Then

        ' level has increased so parentref is previous line part ref '
        StoreParents(Cells(j - 1, Column_Level)) = Cells(j - 1, Column_PartRef)
        Cells(j, Column_ParentRef) = Cells(j - 1, Column_PartRef)

    ElseIf (CInt(Cells(j, Column_Level)) < CInt(Cells(j - 1, Column_Level))) Then

        ' level has decreased so parentref is the stored partRef of new level - 1 '
        Cells(j, Column_ParentRef) = StoreParents(Cells(j, Column_Level) - 1)

    Else

        ' no level change, we keep the same ParentRef '
        Cells(j, Column_ParentRef) = Cells(j - 1, Column_ParentRef)

    End If

    ' move to next line '
    j = j + 1

Wend
End Sub

Vous devriez donc obtenir un fichier avec les références parents indiquées. J’ai fait exprès de lister un article de niveau 3 puis de niveau 1 pour montrer que l’on peut remonter de plusieurs niveaux à la fois sans problème.

Nomenclature Remontée

 

Voilà mon petit cadeau du dimanche ! C’est pas compliqué mais ça peut servir de temps en temps.

Posted by Yoann Maingon

Consultant PLM avec des expériences autant côté métier que dans l'implémentation technique de solutions PLM et d'intégrations de systèmes, je partage avec vous mes expériences, mes recherches et mes développements à travers ce blog.

8 Comments

  1. […] Mon expérience personnelle autour des standards tourne très largement autour de la récupération de données, et l’échange de données entre systèmes logiciels différents. Je ne compte plus les nomenclatures que l’on me fournit sous format Excel pour les importer dans une solution PLM avec toujours la même phrase: « ça devrait être simple c’est un format assez standard ». (Je ne suis d’ailleurs pas étonné de voir que l’article le plus consulté sur ce blog soit « La ptite macro Excel du Dimanche pour reconstruire une nomenclature »). […]

  2. […] La ptite macro Excel du Dimanche pour reconstruire une nomenclature […]

  3. […] La ptite macro Excel du Dimanche pour reconstruire une nomenclature […]

  4. […] en utilisant une nomenclature sur le site d’Arena PLM et en appliquant « la petite macro Excel du dimanche » (qui reste un des articles les plus visités sur ce […]

  5. […] La ptite macro Excel du Dimanche pour reconstruire une nomenclature […]

  6. […] deuxième « macro excel du dimanche » que je publie sur le blog. La première (macro excel pour reconstituer une BOM en niveau à partir de liens parents-fils) est de loin la page la plus visitée sur le blog et je souhaite un succès identique pour cette […]

  7. […] La ptite macro Excel du Dimanche pour reconstruire une nomenclature […]

  8. […] La ptite macro Excel du Dimanche pour reconstruire une nomenclature […]

Comments are closed.